1. 网易web安全渗透 手动sql注入
靶场环境搭建
环境环境搭建服务器软件是phpstudy下载地址https://www.xp.cn/
靶场是sqli-labs下载地址是https://github.com/Audi-1/sqli-labs
配置sqli-labs的sql密码![]()
用php5和mysql5.7![]()
成功![]()
注入的常用的函数
select system_user(); 系统用户名
select user(); 当前数据库用户名
select current_user(); 当前用户名
select session_user(); 连接数据库的用户名
select version(); 数据库版本
select @@datadir; 数据库路径
select @@basedir; 数据库安装路径
select version() mysql; 数据库版本
select @@global.version_compile_os; 操作系统的信息
select @@version_compile_os; 操作系统的信息
select database(); 返回当前使用的数据库
![]()
count() 返回运行结果的数量
![]()
concat() 叫我们的内容进行连接起来
可以看见下面的结果叫我们的abc和def进行了连接
![]()
我们在注入查询到时候通常会下面这样做,结果会输入到一起
![]()
concat_ws() 叫我们的内容进行连接起来
可以看见上面concat()中间连接没有缝隙的concat_ws()是可以添加分隔符的
![]()
group_concat() 叫结果输入成一行
![]()
load_file() 读取本地文件
![]()
into outfile 写文件
![]()
select ascii() ; 返回字符的ASCII值
![]()
select char() ; #他和ascii()是相反的,数字对应字符
![]()
select ord(); 返回第一个字符的ASCII值
![]()
select mid(‘字符串’,从哪,到哪); 指定返回字符串的,类似切片
![]()
select substr(‘字符串’,从哪,到哪); 和上面的一样
select length() 返回字符串的长度
![]()
select left() 指定返回从左边开始长度,类似切片
![]()
select floor() 返回整数,这个不四十五路
![]()
select rand() 生成0到1随机数
extractvlue()
updatexml()
select sleep() # 设置语句执行暂停几秒
select if(1>2,2,3); # 真就返回第二个参数假就返回第三个参数
结果=3
select strcmp(); # 比较字符串的大小
1 |
|
select ifnull(参数1,参数2); # 如果参数1不是null就返回参数1,如果参数1是null就返回参数2
1 | MySQL [dvwa]> select ifnull(4,6); |
select exp(参数); # 返回参数的几次方
mysql的运算符
寻找注入点
无特定目标
1 | inurl:php?id= |
![]()
有特定目标
1 | inurl:php?id=site:xxxx.com |
![]()
检查注入点
- 手工简单识别
1 | and 1=1/ and 1=2 |
- 工具识别
1 | sqlmap -m 要指定的文件 多个目标URL保持到文件里-m就会用文件里的 |
mysql手动注入
- mysql结构
mysql内库
- 核心原理:
MySq内置的 Information schema库,它功能强大,是我们进行MySq注入的基石!
通过 information schema我们可以窥透整个 MySQL的运行情况,也可以查看到数据库中所有的数据信息。
- 查询数据库核心语法
| 功能名称 | 查询语句 |
|---|---|
| 查库 | select schema_name from information_schema.schemata |
| 查表 | select table_name from information_schema.tables where table_schema=’库名’ |
| 查列 | select column_name from information_schema.columns where table_name=’列名’; |
| 查数据 | select 列名 from 库名.表名 |
演示
1.查库![]()
2.查表![]()
3.查列![]()
可以不输入单引号
比如'users'列名转换成哈希7573657273
步骤![]()
![]()
然后在语句里面输入0x和上面生成出来的哈希
意思
0x是告诉我是16进行的![]()
- 提示
提示1:
所有类型的sql注入,都是基于査库、表、列语句
提示2:
sql注入,都是基于査库、表、列语句
査询的场緊:可利用limit限定返回的数置及位置,依次査询
回显数据的场聚:concat链接多个数据成为一条返回结果
咧
- limit函数
上面的这个limit,下面是他的演示,就是叫修改就可以查看其他的行
- group_concat()函数
他可以叫多个列组合到一个里面,应为sql注入,可能输出的有限制,
找个函数就是,叫内容都输出的一个里面
咧
![]()
提示3:.
在一些场景,想要快速获取数据,需要接住工具,如:burp





